<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
<script>
    a = 23;
    var a = 45;
    console.log(a);


    /**
     * 父类
     */ 
    class anmi{
        constructor(color,size){
            //通过构造方法 传递两个参数给了 this这个实例
            //this实例里面的color = color;
            this.color = color;
            this.size = size;
        };
        abc(){
            return this.color +"|" + this.size;
        }
    }


    /**
     * 越来越像面向对象语言了  java
     */ 
    class Dog extends anmi{
        //类里面可能 写 构造方法还可以定普通方法
        // 里面的可以直接定义全局变量 
        //this表示本类实例
        //构造方法 两个有参数
        constructor(color,size,type){
            //通过构造方法 传递两个参数给了 this这个实例
            //this实例里面的color = color;
            //在子类的构造方法里在同，要先初始化父类，然后再对子类进行派生处理
            super(color,size);
            this.type = type;
          
        };
        //访问器  属性的setter \ getter 对外开放一个可以用于存储的属性
        get mycolor(){
            return this.color;
        }

        set mycolor(color){
            this.color = color;
        }

        /**
         * 静态方法
         */ 
        static info(){
            //静态方法不能发起对实例属性的方法
            return this.color +"|" + this.type  +"|" + this.size;
        }

        //普通 方法
        eat(food){
            return "一只"+this.color+"色的，"+this.size+"狗在跑,边跑边吃" + food;
        };
        run(){
            return "一只"+this.color+"色的，"+this.size+"狗在跑" + this.type;
        }
    }

    let dog = new Dog("红","大","松狮");
    dog.mycolor = "sss";
    console.log(dog.run(),dog.eat("狗肉"),dog.abc(),dog.color,Dog.info());

</script>
</body>

</html>